﻿using System.Collections.Generic;
using Core.Base;
using Core.Interfaces;

namespace Core.Mgrs
{
    public class CancelTokenMgr : BaseMgr
    {
        private List<ICancelToken> cancelTokens = new List<ICancelToken>();

        public override void OnDestroy()
        {
            cancelTokens.Clear();
        }

        /// <summary>
        /// 添加取消Token
        /// </summary>
        /// <param name="cancelToken"></param>
        public void AttachCancelToken(ICancelToken cancelToken)
        {
            if (!cancelTokens.Contains(cancelToken))
            {
                cancelTokens.Add(cancelToken);
            }
        }

        public void OnCancelTokenNotify()
        {
            foreach (var item in cancelTokens)
            {
                item?.OnCancelToken();
            }
        }
    }
}